home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr53
/
pctv4n_1.zip
/
ERROR.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-06-10
|
3KB
|
105 lines
{ LISTING 1 : ERROR.PAS }
UNIT Error;
INTERFACE
USES
WinTypes,WinProcs,WObjects,Strings;
TYPE
ERR_Severity = (ERR_None, ERR_Information, ERR_Warning,
ERR_Severe, ERR_Fatal );
{----------------------------------------------------------------
ERR_None = Default condition
ERR_Information = No message unless specifically displayed
ERR_Warning = Message displayed when checked by object's owner
ERR_Severe = Message displayed when checked by object's owner,
or when Done
ERR_Fatal = Message displayed, THEN PostQuitMessage invoked
----------------------------------------------------------------}
TYPE
pError = ^tError;
tError = OBJECT(tObject)
MessageID : Word;
Caption : pChar;
Severity : ERR_Severity;
Retryable : Boolean;
Displayed : Boolean;
Retry : Boolean;
ParentWin : pWindowsObject;
Owner : pObject;
Constructor Init(anOwner: pObject; aCaption: pChar);
Destructor Done; VIRTUAL;
PROCEDURE SetError(aMessageID: Word; aSeverity: ERR_Severity;
aRetryable: Boolean; Caller: pObject);
FUNCTION NoError(Caller: pObject): Boolean;
PROCEDURE Display;
END;
{===============================================================}
IMPLEMENTATION
CONSTRUCTOR tError.Init(anOwner: pObject; aCaption: pChar);
BEGIN
tObject.Init;
MessageID := 0;
IF (aCaption <> Nil) THEN Caption := StrNew(aCaption)
ELSE Caption := StrNew('Error');
Severity := ERR_None;
Displayed := False;
ParentWin := Nil;
Owner := anOwner;
END;
{---------------------------------------------------------------}
DESTRUCTOR tError.Done;
BEGIN
IF (Severity = ERR_Severe) THEN Display;
StrDispose(Caption);
tObject.Done
END;
{---------------------------------------------------------------}
PROCEDURE tError.SetError(aMessageID: Word; aSeverity: ERR_Severity;
aRetryable: Boolean; Caller: pObject);
BEGIN
MessageID := aMessageID;
Severity := aSeverity;
Retryable := aRetryable;
Displayed := False;
Retry := False;
NoError(Caller);
END;
{---------------------------------------------------------------}
FUNCTION tError.NoError(Caller: pObject): Boolean;
BEGIN
CASE Severity OF
ERR_Warning,
ERR_Severe : IF (Caller=Owner) THEN Display;
ERR_Fatal : BEGIN
Display;
PostQuitMessage(MessageID);
END;
END;
NoError := (Severity <= ERR_Information);
END;
{---------------------------------------------------------------}
PROCEDURE tError.Display;
VAR
Message : Array[0..512] of Char;
hWindow : tHandle;
Flags : Word;
CONST
IconFlags: Array [ERR_Severity] of Word =
(0, mb_IconInformation, mb_IconExclamation,
mb_IconStop, mb_IconStop);
BEGIN
IF (NOT Displayed) THEN BEGIN
LoadString(hInstance, MessageID, Message, SizeOf (Message));
Flags := IconFlags[Severity];
IF Retryable THEN Flags := Flags OR mb_RetryCancel;
IF (ParentWin <> Nil) THEN hWindow := ParentWin^.hWindow
ELSE BEGIN
hWindow := 0;
Flags := Flags OR mb_TaskModal;
END;
Retry := (MessageBox(hWindow,@Message,Caption,Flags)=idRetry);
Displayed := TRUE;
END;
END;
END.